package com.gxa.xc.rbac.service.impl;

import com.gxa.xc.rbac.dto.ResultDTO;
import com.gxa.xc.rbac.mapper.AdminMapper;
import com.gxa.xc.rbac.pojo.Admin;
import com.gxa.xc.rbac.service.LoginService;
import com.gxa.xc.rbac.util.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;

/**
 * @author:IT-CNLM
 * @date:Created at 2020/10/21
 */
@Service
@SuppressWarnings("all")
public class LoginServiceImpl implements LoginService {


    @Autowired
    private AdminMapper adminMapper;

    /**
     * 登陆的方法
     * @param admin : 管理员对象
     * @return
     */
    @Override
    public ResultDTO login(Admin admin, HttpSession session) {
        // 数据校验

        // 首先需要从数据查询数据
        Admin dbAdmin = adminMapper.findByName(admin.getAdminName());
        // 判断对象是否存在
        if (dbAdmin == null) {
            return new ResultDTO(1001, "对不起, 用户不存在!");
        }
        // 判断密码
        if (!dbAdmin.getAdminPwd().equals(MD5Util.MD55(admin.getAdminPwd()))) {
            return new ResultDTO(1002, "对不起, 密码错误!");
        }
        // 判断状态
        if (dbAdmin.getStatus().equals(0)) {
            return new ResultDTO(1003, "对不起, 账户被锁定!去找超管");
        }
        // 登陆成功
        // 保存一个管理员名字
        session.setAttribute("adminName", admin.getAdminName());
        // 保存管理员的所有数据
        session.setAttribute("admin", dbAdmin);

        return new ResultDTO(200, "登陆成功!");
    }
}
